#include <iostream>
#include <string>

using namespace std;

class point
{
private:
    // 成员属性，表示点的坐标
    int x;  // x 坐标
    int y;  // y 坐标

public:
    // 默认构造函数，初始化坐标为 (0, 0)
    point()
    {
        this->x = 0;  // 默认 x 坐标为 0
        this->y = 0;  // 默认 y 坐标为 0
    }

    // 带参构造函数，根据传入的 x 和 y 初始化点的坐标
    point(int x, int y)
        : x(x), y(y)  // 使用初始化列表直接初始化成员变量
    {
        // 不需要再写 x = x; 和 y = y; 因为初始化列表已经完成了初始化
    }

    // 拷贝构造函数，用于创建一个新的 point 对象，作为另一个 point 对象的副本
    point(const point &other)
    {
        this->x = other.x;  // 复制另一个 point 对象的 x 坐标
        this->y = other.y;  // 复制另一个 point 对象的 y 坐标
    }

public:
    // 成员函数：获取 x 坐标
    int get_x(void)
    {
        return this->x;  // 返回当前点的 x 坐标
    }

    // 成员函数：获取 y 坐标
    int get_y(void)
    {
        return this->y;  // 返回当前点的 y 坐标
    }

    // 成员函数：设置 x 坐标
    void set_x(int x)
    {
        this->x = x;  // 设置当前点的 x 坐标
    }

    // 成员函数：设置 y 坐标
    void set_y(int y)
    {
        this->y = y;  // 设置当前点的 y 坐标
    }
};
